Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>JRuby</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/JRuby"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-JRuby rootpage-JRuby skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">JRuby</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p class="mw-empty-elt">
</p>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */


.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}


/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above summary">JRuby</th></tr><tr><td colspan="2" class="infobox-image logo"><span typeof="mw:File"></span></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Programmer" title="Programmer">Developer(s)</a></th><td class="infobox-data">Charles Oliver Nutter, Thomas Enebo, Ola Bini and Nick Sieger</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Initial release</th><td class="infobox-data">2001<span style="display:none">&nbsp;(<span class="bday dtstart published updated">2001</span>)</span></td></tr><tr style="display: none;"><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">9.4.12.0
/ 11&nbsp;February 2025<span style="display:none">&nbsp;(<span class="bday dtstart published updated">2025-02-11</span>)</span><sup id="cite_ref-release_1-0" class="reference"><a href="#cite_note-release-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Repository_(version_control)" title="Repository (version control)">Repository</a></th><td class="infobox-data"><style data-mw-deduplicate="TemplateStyles:r1126788409">
/* start https://en.wikipedia.org/ */


.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}


/* end https://en.wikipedia.org/ */
</style><div class="plainlist"><ul><li><span class="url"><a rel="nofollow" class="external text" href="https://github.com/jruby/jruby">github<wbr>.com<wbr>/jruby<wbr>/jruby</a></span> </li></ul>
</div></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Written in</th><td class="infobox-data"><a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a> and <a href="Java_(programming_language)" title="Java (programming language)">Java</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Operating_system" title="Operating system">Operating system</a></th><td class="infobox-data"><a href="Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Computing_platform" title="Computing platform">Platform</a></th><td class="infobox-data"><a href="Java_virtual_machine" title="Java virtual machine">Java virtual machine</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_categories#Categorization_approaches" title="Software categories">Type</a></th><td class="infobox-data">Ruby programming language interpreter</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="Eclipse_Public_License" title="Eclipse Public License">EPL</a>/<a href="GNU_General_Public_License" title="GNU General Public License">GPL</a>/<a href="GNU_Lesser_Public_License" class="mw-redirect" title="GNU Lesser Public License">LGPL</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://www.jruby.org">www<wbr>.jruby<wbr>.org</a></span>&nbsp;<span class="penicon autoconfirmed-show"></span></td></tr></tbody></table>
<p><b>JRuby</b> is an implementation of the <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby programming language</a> atop the <a href="Java_Virtual_Machine" class="mw-redirect" title="Java Virtual Machine">Java Virtual Machine</a>, written largely in <a href="Java_(programming_language)" title="Java (programming language)">Java</a>. It is <a href="Free_software" title="Free software">free software</a> released under a three-way <a href="Eclipse_Public_License" title="Eclipse Public License">EPL</a>/<a href="GNU_General_Public_License" title="GNU General Public License">GPL</a>/<a href="GNU_Lesser_Public_License" class="mw-redirect" title="GNU Lesser Public License">LGPL</a> license. JRuby is tightly integrated with <a href="Java_(programming_language)" title="Java (programming language)">Java</a> to allow the embedding of the interpreter into any Java application with full two-way access between the Java and the Ruby code (similar to <a href="Jython" title="Jython">Jython</a> for the Python language).
</p><p>JRuby's lead developers are Charles Oliver Nutter and Thomas Enebo, with many current and past contributors including <a href="Ola_Bini" title="Ola Bini">Ola Bini</a> and Nick Sieger. In September 2006, <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> hired Enebo and Nutter to work on JRuby full-time.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> In June 2007, <a href="ThoughtWorks" class="mw-redirect" title="ThoughtWorks">ThoughtWorks</a> hired Ola Bini to work on Ruby and JRuby.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p><p>In July 2009, the JRuby developers left Sun to continue JRuby development at <a href="Engine_Yard" title="Engine Yard">Engine Yard</a>.<sup id="cite_ref-engineyardmove_4-0" class="reference"><a href="#cite_note-engineyardmove-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> In May 2012, Nutter and Enebo left Engine Yard to work on JRuby at <a href="Red_Hat" title="Red Hat">Red Hat</a>.<sup id="cite_ref-redhatmove_5-0" class="reference"><a href="#cite_note-redhatmove-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>JRuby was originally created by Jan Arne Petersen, in 2001. At that time and for several years following, the code was a direct port of the Ruby 1.6 <a href="C_(programming_language)" title="C (programming language)">C</a> code. With the release of Ruby 1.8.6, an effort began to update JRuby to 1.8.6 features and semantics. Since 2001, several contributors have assisted the project, leading to the current (2012) core team of around six members.
</p><p>JRuby 1.1 added <a href="Just-in-time_compilation" title="Just-in-time compilation">Just-in-time compilation</a> and <a href="AOT_compiler" class="mw-redirect" title="AOT compiler">Ahead-of-time compilation</a> modes to JRuby and was already faster in most cases than the then-current Ruby 1.8.7 reference implementation.<sup id="cite_ref-antoniocangiano_6-0" class="reference"><a href="#cite_note-antoniocangiano-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p><p>JRuby packages are available for most platforms; <a href="Fedora_(operating_system)" class="mw-redirect" title="Fedora (operating system)">Fedora 9</a> was among the first to include it as a standard package at JRuby 1.1.1.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p><p>In July 2009, the core JRuby developers at Sun Microsystems, Charles Oliver Nutter, Thomas Enebo and Nick Sieger, joined <a href="Engine_Yard" title="Engine Yard">Engine Yard</a> to continue JRuby development.<sup id="cite_ref-engineyardmove_4-1" class="reference"><a href="#cite_note-engineyardmove-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> In May 2012, Nutter and Enebo left Engine Yard to work on JRuby at <a href="Red_Hat" title="Red Hat">Red Hat</a>.<sup id="cite_ref-redhatmove_5-1" class="reference"><a href="#cite_note-redhatmove-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p><p>JRuby has supported compatibility with <a href="Ruby_MRI" title="Ruby MRI">Ruby MRI</a> versions 1.6 through 1.9.3. JRuby 1.0 supported Ruby 1.8.6, with JRuby 1.4.0 updating that compatibility to Ruby 1.8.7. JRuby 1.6.0 added simultaneous support for Ruby 1.9.2, with JRuby 1.7.0 making Ruby 1.9.3 the default execution mode (Ruby 1.8.7 compatibility is available via a command-line flag). JRuby 9.0.0.0 added support for Ruby 2.2.
</p><p>The current version of JRuby (9.4.3.0) targets Ruby 3.1, though some 3.1 features are still in work.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Ruby_on_Rails">Ruby on Rails</h3></div>
<p>JRuby has been able to run the <a href="Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a> web framework since version 0.9 (May 2006),<sup id="cite_ref-railssup_11-0" class="reference"><a href="#cite_note-railssup-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> with the ability to execute <a href="RubyGems" title="RubyGems">RubyGems</a> and <a href="WEBrick" title="WEBrick">WEBrick</a>. Since the hiring of the two lead developers by Sun, Rails compatibility and speed have improved greatly. JRuby version 1.0 successfully passed nearly all of Rails's own test cases.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> Since then, developers have begun to use JRuby for Rails applications in production environments.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Multiple_virtual_machine_collaboration">Multiple virtual machine collaboration</h3></div>
<p>On February 27, 2008, <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> and the <a href="University_of_Tokyo" title="University of Tokyo">University of Tokyo</a> announced a joint-research project to implement a virtual machine capable of executing more than one <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a> or JRuby application on one interpreter.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Dynamic_invocation_on_Java_Virtual_Machines">Dynamic invocation on Java Virtual Machines</h3></div>
<p><a href="JSR_292" class="mw-redirect" title="JSR 292">JSR 292</a> (<i>Supporting Dynamically Typed Languages on the JavaTM Platform</i>)<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> proposes:
</p>
<ul><li>adding a new <code>invokedynamic</code> instruction at the JVM level, allowing method invocation using dynamic <a href="Type_system#Type_checking" title="Type system">type checking</a>,</li>
<li>dynamically changing classes and methods at runtime.</li></ul>
<p>The Sun Open source project <a href="Da_Vinci_Machine" title="Da Vinci Machine">Multi Language Virtual Machine</a> aims to prototype this JSR.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> The first working prototype, developed as a patch on <a href="OpenJDK" title="OpenJDK">OpenJDK</a>, was announced and made available on end of August 2008.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>
</p><p>The JRuby team has implemented dynamic invocation into their codebase. Dynamic invocation initially shipped with the 1.1.5 release in a primitive form.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> Version 1.7.0 enabled it by default on Java 8 builds.<sup id="cite_ref-170release_21-0" class="reference"><a href="#cite_note-170release-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Release_history">Release history</h3></div>
<p>This table presents only releases that present significant steps in JRuby history, aside from versions that mainly fixed bugs and improved performance. Performance improvements are also not shown in the table below, as every release has usually brought such improvements.
</p>
<table class="wikitable">

<tbody><tr>
<th width="60">Release
</th>
<th width="110">Release Date
</th>
<th width="500">Highlights
</th></tr>
<tr>
<td>0.9</td>
<td>August 1, 2006</td>
<td>Rails support<sup id="cite_ref-railssup_11-1" class="reference"><a href="#cite_note-railssup-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>
</td></tr>
<tr>
<td>1.1</td>
<td>March 28, 2008</td>
<td>Performs better than Ruby MRI 1.8.7<sup id="cite_ref-antoniocangiano_6-1" class="reference"><a href="#cite_note-antoniocangiano-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><br><a href="AOT_compiler" class="mw-redirect" title="AOT compiler">AOT mode</a> and <a href="Just-in-time_compilation" title="Just-in-time compilation">JIT mode</a><sup id="cite_ref-compilerComplete_22-0" class="reference"><a href="#cite_note-compilerComplete-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>
</td></tr>
<tr>
<td>1.1.4</td>
<td>August 28, 2008</td>
<td>Refactored Java integration layer<br>Beginning of Ruby 1.9 support<br><a href="Foreign_function_interface" title="Foreign function interface">FFI</a> subsystem for calling <a href="C_(programming_language)" title="C (programming language)">C</a> libraries<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup>
</td></tr>
<tr>
<td>1.2.0<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup>
</td>
<td>March 16, 2009</td>
<td><a href="Just-in-time_compilation" title="Just-in-time compilation">JIT</a> compiler for Ruby 1.9<br>Preliminary <a href="Android_(operating_system)" title="Android (operating system)">Android</a> support by the Ruboto project.
</td></tr>
<tr>
<td>1.3.0<sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>
</td>
<td>June 3, 2009</td>
<td>JRuby runs in restricted environments better like <a href="Google_App_Engine" title="Google App Engine">GAE/J</a>
</td></tr>
<tr>
<td>1.4.0<sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>
</td>
<td>November 2, 2009</td>
<td>Windows Native Launcher and Windows installer<br>Ruby 1.8.7 support
</td></tr>
<tr>
<td>1.5.0<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup>
</td>
<td>May 12, 2010</td>
<td>Native Launcher for <a href="UNIX" class="mw-redirect" title="UNIX">UNIX</a>-based platforms<br>Ant support and Rake-Ant integration<br>Updates to the standard library, <a href="RubyGems" title="RubyGems">RubyGems</a>, and <a href="RSpec" title="RSpec">RSpec</a>
</td></tr>
<tr>
<td>1.6.0<sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup>
</td>
<td>March 15, 2011</td>
<td>Ruby 1.9.2 language and API compatibility<br>Built-in profiler<br>Experimental support for C extensions based on Ruby’s C API
</td></tr>
<tr>
<td>1.7.0<sup id="cite_ref-170release_21-1" class="reference"><a href="#cite_note-170release-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>
</td>
<td>October 22, 2012</td>
<td>Ruby 1.9.3 language is the default mode<br>Support for <a href="Da_Vinci_Machine" title="Da Vinci Machine">invokedynamic</a>
</td></tr>
<tr>
<td>1.7.4<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup>
</td>
<td>May 16, 2013</td>
<td>Experimental Ruby 2.0 support (most features and <a href="Stdlib" class="mw-redirect" title="Stdlib">stdlib</a> included)
</td></tr>
<tr>
<td>9.0.0.0<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup>
</td>
<td>July 22, 2015</td>
<td>Ruby 2.x support<br>New optimizing runtime<br>New <a href="POSIX" title="POSIX">POSIX</a>-friendly IO and Process
<p>Fully ported encoding/transcoding logic from MRI
</p>
</td></tr>
<tr>
<td>9.1.7.0<sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup>
</td>
<td>January 11, 2017
</td>
<td>Fixed serious LinkageError when using multiple threads
<p>Fixed several keyword argument issues
</p><p>Fixed several parser issues
</p><p>Reduced memory use of the JIT
</p><p>Update Psych to 2.2.2
</p><p>Update jruby-openssl to 0.9.18
</p><p>72 issues fixed
</p>
</td></tr>
<tr>
<td>9.2.0.0<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup>
</td>
<td>May 24, 2018</td>
<td>Ruby 2.5 language support
</td></tr>
<tr>
<td>9.2.9.0<sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup>
</td>
<td>October 30, 2019</td>
<td>Ruby 2.5.7 language support
</td></tr>
<tr>
<td>9.3.2.0<sup id="cite_ref-35" class="reference"><a href="#cite_note-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup>
</td>
<td>December 2, 2021</td>
<td>Ruby 2.6.x language support
</td></tr>
<tr>
<td>9.3.3.0<sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup>
</td>
<td>January 19, 2022</td>
<td>Ruby 2.6.x language support
</td></tr>
<tr>
<td>9.3.4.0<sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup>
</td>
<td>March 23, 2022</td>
<td>Ruby 2.6.x language support
</td></tr>
<tr>
<td>9.4.0.0<sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span class="cite-bracket">[</span>38<span class="cite-bracket">]</span></a></sup>
</td>
<td>November 22, 2022</td>
<td>Ruby 3.1 language support
</td></tr>
<tr>
<td>9.4.1.0<sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span class="cite-bracket">[</span>39<span class="cite-bracket">]</span></a></sup>
</td>
<td>February 7, 2023</td>
<td>Ruby 3.1 language support
</td></tr>
<tr>
<td>9.4.2.0<sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span class="cite-bracket">[</span>40<span class="cite-bracket">]</span></a></sup>
</td>
<td>March 8, 2023</td>
<td>Ruby 3.1 language support
</td></tr>
<tr>
<td>9.4.3.0<sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span class="cite-bracket">[</span>41<span class="cite-bracket">]</span></a></sup>
</td>
<td>June 7, 2023</td>
<td>Ruby 3.1 language support
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Design">Design</h2></div>
<p>Since early 2006, the current JRuby core team has endeavored to move JRuby beyond being a simple C port, to support better performance and to aid eventual compilation to <a href="Java_bytecode" title="Java bytecode">Java bytecode</a>. To support this end, the team set an ambitious goal: to be able to run Ruby on Rails unmodified using JRuby. In the process of achieving this goal, the JRuby test suite expanded to such extent that the team gained confidence in the "correctness" of JRuby. As a result, toward the end of 2006 and in the beginning of 2007, they began to commit much more complicated redesigns and refactorings of JRuby's core subsystems.
</p><p>JRuby is designed to work as a mixed-mode virtual machine for Ruby, where code can be either interpreted directly, just-in-time compiled at runtime to Java bytecode, or ahead-of-time compiled to Java bytecode before execution. Until October 2007, only the <a href="Interpreter_(computing)" title="Interpreter (computing)">interpreted</a> mode supported all Ruby's constructs, but a full AOT/JIT compiler is available since version 1.1.<sup id="cite_ref-compilerComplete_22-1" class="reference"><a href="#cite_note-compilerComplete-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> The compiler design allows for interpreted and compiled code to run side-by-side, as well as <a href="Deoptimization" class="mw-redirect" title="Deoptimization">decompilation</a> to reoptimize and outputting generated bytecode as Java class files.
</p>
<div class="mw-heading mw-heading2"><h2 id="Frameworks_support">Frameworks support</h2></div>
<p>JRuby has built-in support for Rails, RSpec, <a href="Rake_(software)" title="Rake (software)">Rake</a>, and RubyGems. It embeds an FFI subsystem to allow the use of C libraries bundled as gems. It also allows launching the <a href="Interactive_Ruby_Shell" class="mw-redirect" title="Interactive Ruby Shell">Interactive Ruby Shell</a> (irb) as Ruby MRI does.
</p><p>The <a href="NetBeans#NetBeans_IDE_download_bundles" title="NetBeans">Netbeans Ruby Pack</a>, available in NetBeans 6, allows IDE development with Ruby and JRuby, as well as Ruby on Rails for the two implementations of Ruby.<sup id="cite_ref-42" class="reference"><a href="#cite_note-42"><span class="cite-bracket">[</span>42<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-43" class="reference"><a href="#cite_note-43"><span class="cite-bracket">[</span>43<span class="cite-bracket">]</span></a></sup>
It is no longer included in NetBeans 7.0 and later.
</p>
<div class="mw-heading mw-heading2"><h2 id="Programming">Programming</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Ruby_meets_Java">Ruby meets Java</h3></div>
<p>JRuby is similar to the standard Ruby interpreter except written in <a href="Java_(programming_language)" title="Java (programming language)">Java</a>. JRuby features some of the same concepts, including <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a>, and <a href="Dynamic_typing" class="mw-redirect" title="Dynamic typing">dynamic typing</a> as Ruby. The key difference is that JRuby is tightly integrated with Java, and can be called directly from Java programs.<sup id="cite_ref-44" class="reference"><a href="#cite_note-44"><span class="cite-bracket">[</span>44<span class="cite-bracket">]</span></a></sup> Java has significant footing in the development of web applications.
</p>
<div class="mw-heading mw-heading3"><h3 id="JRuby_calling_Java">JRuby calling Java</h3></div>
<p>One powerful feature of JRuby is its ability to invoke the classes of the <a href="Java_Platform" class="mw-redirect" title="Java Platform">Java Platform</a>. To do this, one must first load JRuby's Java support, by calling "require 'java'". The following example creates a Java JFrame with a JLabel:
</p>
<div class="mw-highlight mw-highlight-lang-ruby mw-content-ltr" dir="ltr"><pre><span class="nb">require</span><span class="w"> </span><span class="s1">'java'</span>

<span class="n">frame</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">javax</span><span class="o">.</span><span class="n">swing</span><span class="o">.</span><span class="n">JFrame</span><span class="o">.</span><span class="n">new</span>
<span class="n">frame</span><span class="o">.</span><span class="n">getContentPane</span><span class="o">.</span><span class="n">add</span><span class="w"> </span><span class="n">javax</span><span class="o">.</span><span class="n">swing</span><span class="o">.</span><span class="n">JLabel</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'Hello, World!'</span><span class="p">)</span>
<span class="n">frame</span><span class="o">.</span><span class="n">setDefaultCloseOperation</span><span class="w"> </span><span class="n">javax</span><span class="o">.</span><span class="n">swing</span><span class="o">.</span><span class="n">JFrame</span><span class="o">::</span><span class="no">EXIT_ON_CLOSE</span>
<span class="n">frame</span><span class="o">.</span><span class="n">pack</span>
<span class="n">frame</span><span class="o">.</span><span class="n">set_visible</span><span class="w"> </span><span class="kp">true</span>
</pre></div>
<p>JRuby also allows the user to call Java code using the more Ruby-like <a href="Naming_conventions_(programming)" class="mw-redirect" title="Naming conventions (programming)">underscore method naming</a> and to refer to <a href="JavaBean" class="mw-redirect" title="JavaBean">JavaBean</a> properties as attributes:
</p>
<div class="mw-highlight mw-highlight-lang-ruby mw-content-ltr" dir="ltr"><pre><span class="n">frame</span><span class="o">.</span><span class="n">content_pane</span><span class="o">.</span><span class="n">add</span><span class="w"> </span><span class="n">label</span>
<span class="n">frame</span><span class="o">.</span><span class="n">visible</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kp">true</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Calling_JRuby_from_Java">Calling JRuby from Java</h3></div>
<p>JRuby can just as easily be called from Java, using either the <a href="JSR_223" class="mw-redirect" title="JSR 223">JSR 223</a><sup id="cite_ref-45" class="reference"><a href="#cite_note-45"><span class="cite-bracket">[</span>45<span class="cite-bracket">]</span></a></sup> Scripting for Java 6 or the <a href="Bean_Scripting_Framework" title="Bean Scripting Framework">Apache Bean Scripting</a> framework.
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="c1">//Example using JSR 233 Scripting for Java 6</span>
<span class="n">ScriptEngineManager</span><span class="w"> </span><span class="n">mgr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ScriptEngineManager</span><span class="p">();</span>
<span class="n">ScriptEngine</span><span class="w"> </span><span class="n">rbEngine</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mgr</span><span class="p">.</span><span class="na">getEngineByExtension</span><span class="p">(</span><span class="s">"rb"</span><span class="p">);</span>
<span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">rbEngine</span><span class="p">.</span><span class="na">eval</span><span class="p">(</span><span class="s">"puts 'Hello World!'"</span><span class="p">);</span>
<span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">ScriptException</span><span class="w"> </span><span class="n">ex</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Performance">Performance</h2></div>
<p>According to some benchmarks, JRuby is faster than alternatives. Since implementations vary in how much code is loaded before execution, different methods of measuring speed can lead to biased interpretations of performance advantages. The time it takes for a <a href="Java_Virtual_Machine" class="mw-redirect" title="Java Virtual Machine">Java Virtual Machine</a> itself to load is often excluded from execution times when calculating benchmarks.
</p><p>JRuby has the significant architectural advantage to be able to leverage JVM threads without being constrained by a <a href="Global_interpreter_lock" title="Global interpreter lock">global interpreter lock</a> (similarly to <a href="Rubinius" title="Rubinius">Rubinius</a>), therefore achieving full parallelism within a process, which Ruby MRI cannot achieve despite leveraging OS threads.
</p><p>In a real <a href="Mongrel_(web_server)" title="Mongrel (web server)">Mongrel</a> <a href="Web_server" title="Web server">web server</a> application tested in 2007, JRuby performance is better than Ruby MRI 1.8, after the Java Virtual Machine had been instantiated.<sup id="cite_ref-46" class="reference"><a href="#cite_note-46"><span class="cite-bracket">[</span>46<span class="cite-bracket">]</span></a></sup>
</p><p>In a 2007 benchmark of Ruby implementations, JRuby was faster than Ruby MRI 1.8 in some tests, but <a href="YARV" title="YARV">YARV</a> outperformed both of them.<sup id="cite_ref-47" class="reference"><a href="#cite_note-47"><span class="cite-bracket">[</span>47<span class="cite-bracket">]</span></a></sup>
</p><p>As of April 2014, in <a href="The_Computer_Language_Benchmarks_Game" title="The Computer Language Benchmarks Game">The Computer Language Benchmarks Game</a>, JRuby 1.7.4 typically has the same performance as Ruby MRI 2.1.0, but uses more memory.<sup id="cite_ref-48" class="reference"><a href="#cite_note-48"><span class="cite-bracket">[</span>48<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-49" class="reference"><a href="#cite_note-49"><span class="cite-bracket">[</span>49<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */


.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}


/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="GraalVM" title="GraalVM">GraalVM</a></li>
<li><a href="List_of_Java_scripting_languages" class="mw-redirect" title="List of Java scripting languages">List of Java scripting languages</a></li>
<li><a href="ZK_(framework)" title="ZK (framework)">ZK (framework)</a> – an Ajax framework supporting JRuby</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;">
<ol class="references">
<li id="cite_note-release-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-release_1-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jruby.org/2025/02/11/jruby-9-4-12-0.html">"JRuby 9.4.12.0 Released"</a>. <i>jruby.org</i>. February 11, 2025<span class="reference-accessdate">. Retrieved <span class="nowrap">April 12,</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFJacki2006" class="citation web cs1">Jacki (September 7, 2006). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120829225411/https://blogs.oracle.com/ontherecord/entry/sun_welcomes_jruby_developers">"Sun Welcomes JRuby Developers"</a>. On the Record. Archived from <a rel="nofollow" class="external text" href="https://blogs.oracle.com/ontherecord/entry/sun_welcomes_jruby_developers">the original</a> on August 29, 2012<span class="reference-accessdate">. Retrieved <span class="nowrap">November 7,</span> 2013</span>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite id="CITEREFOla_Bini2007" class="citation web cs1">Ola Bini (2007). <a rel="nofollow" class="external text" href="http://ola-bini.blogspot.com/2007/03/thoughtworks.html">"ThoughtWorks"</a>. On the Record.</cite></span>
</li>
<li id="cite_note-engineyardmove-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-engineyardmove_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-engineyardmove_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation magazine cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20090731094537/http://www.pcworld.com/article/169145/suns_jruby_team_jumps_ship_to_engine_yard.html">"Sun's JRuby Team Jumps Ship to Engine Yard"</a>. <i><a href="PCWorld_(magazine)" class="mw-redirect" title="PCWorld (magazine)">PCWorld</a></i>. July 28, 2009. Archived from <a rel="nofollow" class="external text" href="http://www.pcworld.com/article/169145/suns_jruby_team_jumps_ship_to_engine_yard.html">the original</a> on July 31, 2009<span class="reference-accessdate">. Retrieved <span class="nowrap">June 2,</span> 2012</span>.</cite></span>
</li>
<li id="cite_note-redhatmove-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-redhatmove_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-redhatmove_5-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.theregister.co.uk/2012/05/23/red_hat_hires_j_ruby_brains/">"Red Hat lures in JRuby power pair"</a>. <i><a href="The_Register" title="The Register">The Register</a></i>. May 23, 2012<span class="reference-accessdate">. Retrieved <span class="nowrap">June 2,</span> 2012</span>.</cite></span>
</li>
<li id="cite_note-antoniocangiano-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-antoniocangiano_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-antoniocangiano_6-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFCangiano2007" class="citation web cs1">Cangiano, Antonio (March 12, 2007). <a rel="nofollow" class="external text" href="http://antoniocangiano.com/2007/12/03/the-great-ruby-shootout/">"The Great Ruby Shootout"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">February 1,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite id="CITEREFNutter2008" class="citation web cs1">Nutter, Charles (April 25, 2008). <a rel="nofollow" class="external text" href="http://headius.blogspot.com/2008/04/jruby-111-in-redhat-fedora.html">"JRuby 1.1.1 in RedHat Fedora"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">April 26,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text">
<cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://admin.fedoraproject.org/pkgdb/packages/name/jruby">"jruby"</a>. fedoraproject.org<span class="reference-accessdate">. Retrieved <span class="nowrap">April 26,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFNutter2009" class="citation web cs1">Nutter, Charles (July 28, 2009). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090731123454/http://www.engineyard.com/blog/2009/jrubys-future-at-engine-yard/">"JRuby's Future at Engine Yard"</a>. Archived from <a rel="nofollow" class="external text" href="http://www.engineyard.com/blog/2009/jrubys-future-at-engine-yard/">the original</a> on July 31, 2009<span class="reference-accessdate">. Retrieved <span class="nowrap">July 28,</span> 2009</span>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/jruby/jruby/issues/7460">"Unfinished Ruby 3.1 features"</a>. JRuby Team<span class="reference-accessdate">. Retrieved <span class="nowrap">June 13,</span> 2023</span>.</cite></span>
</li>
<li id="cite_note-railssup-11"><span class="mw-cite-backlink">^ <a href="#cite_ref-railssup_11-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-railssup_11-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080303021232/http://wiki.jruby.org/wiki/Rails_Support">"Rails Support"</a>. JRuby Team. Archived from <a rel="nofollow" class="external text" href="http://wiki.jruby.org/wiki/Rails_Support">the original</a> on March 3, 2008<span class="reference-accessdate">. Retrieved <span class="nowrap">February 17,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite id="CITEREFNutter2008" class="citation web cs1">Nutter, Charles (August 24, 2008). <a rel="nofollow" class="external text" href="http://blog.headius.com/2008/08/zero-to-production-in-15-minutes.html">"Zero to Production in 15 Minutes"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">August 27,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text">98.6% of the 2,807 Rails-specific test cases execute successfully; see <a rel="nofollow" class="external text" href="http://docs.codehaus.org/display/JRUBY/2007/03/05/JRuby+0.9.8+Released">JRuby 0.9.8 Released</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150522171605/http://docs.codehaus.org/display/JRUBY/2007/03/05/JRuby%200.9.8%20Released">Archived</a> May 22, 2015, at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/jruby/jruby/wiki/SuccessStories">"Success Stories"</a>. JRuby Wiki on GitHub. January 5, 2011<span class="reference-accessdate">. Retrieved <span class="nowrap">March 16,</span> 2011</span>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.sun.com/aboutsun/pr/2008-02/sunflash.20080227.5.xml">"The University of Tokyo and Sun Microsystems Commence Joint Research Projects on High Performance Computing and Web-based Programming Languages"</a>. <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>. February 27, 2008<span class="reference-accessdate">. Retrieved <span class="nowrap">February 28,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=292">see JSR 292</a></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://openjdk.java.net/projects/mlvm/subprojects.html">"Sub-Projects and Investigations"</a>. <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>. 2007<span class="reference-accessdate">. Retrieved <span class="nowrap">February 6,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite id="CITEREFRose2008" class="citation web cs1">Rose, John (August 26, 2008). <a rel="nofollow" class="external text" href="https://blogs.oracle.com/jrose/entry/international_invokedynamic_day">"Happy International Invokedynamic Day!"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">September 3,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><cite id="CITEREFLorimer2008" class="citation web cs1">Lorimer, R.J. (September 1, 2008). <a rel="nofollow" class="external text" href="http://www.infoq.com/news/2008/09/invokedynamic_day">"Dynamic Invocation Runs on OpenJDK"</a>. infoq.com<span class="reference-accessdate">. Retrieved <span class="nowrap">September 3,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><cite id="CITEREFNutter2008" class="citation web cs1">Nutter, Charles (September 11, 2008). <a rel="nofollow" class="external text" href="http://blog.headius.com/2008/09/first-taste-of-invokedynamic.html">"A First Taste of InvokeDynamic"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">September 13,</span> 2008</span>. <q><i>I managed to successfully wire InvokeDynamic directly into JRuby's dispatch process! Such excitement! The code is already in JRuby's trunk, and will ship with JRuby 1.1.5 (though it obviously will be disabled on JVMs without InvokeDynamic).</i></q></cite></span>
</li>
<li id="cite_note-170release-21"><span class="mw-cite-backlink">^ <a href="#cite_ref-170release_21-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-170release_21-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20121025001231/http://www.jruby.org/2012/10/22/jruby-1-7-0.html">"JRuby 1.7.0 Released"</a>. JRuby Team. October 22, 2012. Archived from <a rel="nofollow" class="external text" href="http://jruby.org/2012/10/22/jruby-1-7-0.html">the original</a> on October 25, 2012<span class="reference-accessdate">. Retrieved <span class="nowrap">October 23,</span> 2011</span>.</cite></span>
</li>
<li id="cite_note-compilerComplete-22"><span class="mw-cite-backlink">^ <a href="#cite_ref-compilerComplete_22-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-compilerComplete_22-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFNutter2007" class="citation web cs1">Nutter, Charles (September 27, 2007). <a rel="nofollow" class="external text" href="http://headius.blogspot.com/2007/09/compiler-is-complete.html">"The Compiler Is Complete"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">October 12,</span> 2007</span>.</cite></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><cite id="CITEREFEnebo2008" class="citation web cs1">Enebo, Tom (August 28, 2008). <a rel="nofollow" class="external text" href="http://www.bloglines.com/blog/ThomasEEnebo/2008_8">"JRuby 1.1.4 Released"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">February 25,</span> 2009</span>.</cite></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><cite id="CITEREFEnebo2009" class="citation web cs1">Enebo, Tom (March 16, 2009). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090319000144/http://docs.codehaus.org/display/JRUBY/2009/03/16/JRuby+1.2.0+Released">"JRuby 1.2.0 Released"</a>. JRuby Team. Archived from <a rel="nofollow" class="external text" href="http://docs.codehaus.org/display/JRUBY/2009/03/16/JRuby+1.2.0+Released">the original</a> on March 19, 2009<span class="reference-accessdate">. Retrieved <span class="nowrap">March 17,</span> 2009</span>.</cite></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text"><cite id="CITEREFEnebo2009" class="citation web cs1">Enebo, Tom (June 3, 2009). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090612104551/http://docs.codehaus.org/display/JRUBY/2009/06/03/JRuby+1.3.0+Released">"JRuby 1.3.0 Released"</a>. JRuby Team. Archived from <a rel="nofollow" class="external text" href="http://docs.codehaus.org/display/JRUBY/2009/06/03/JRuby+1.3.0+Released">the original</a> on June 12, 2009<span class="reference-accessdate">. Retrieved <span class="nowrap">June 3,</span> 2009</span>.</cite></span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-26">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.jruby.org/2009/11/02/jruby-1-4-0">"JRuby 1.4.0 Released"</a>. JRuby Team. November 2, 2009<span class="reference-accessdate">. Retrieved <span class="nowrap">November 3,</span> 2009</span>.</cite></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20091115202727/http://adtmag.com/articles/2009/11/10/jruby-1.4-released.aspx">"JRuby 1.4.0 Released"</a>. adtmag.com. November 10, 2009. Archived from <a rel="nofollow" class="external text" href="http://adtmag.com/articles/2009/11/10/jruby-1.4-released.aspx">the original</a> on November 15, 2009<span class="reference-accessdate">. Retrieved <span class="nowrap">November 21,</span> 2009</span>.</cite></span>
</li>
<li id="cite_note-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-28">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20100516225724/http://jruby.org/2010/05/12/jruby-1-5-0">"JRuby 1.5.0 Released"</a>. JRuby Team. May 12, 2010. Archived from <a rel="nofollow" class="external text" href="http://jruby.org/2010/05/12/jruby-1-5-0">the original</a> on May 16, 2010<span class="reference-accessdate">. Retrieved <span class="nowrap">May 12,</span> 2010</span>.</cite></span>
</li>
<li id="cite_note-29"><span class="mw-cite-backlink"><b><a href="#cite_ref-29">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.jruby.org/2011/03/15/jruby-1-6-0.html">"JRuby 1.6.0 Released"</a>. JRuby Team. March 15, 2011<span class="reference-accessdate">. Retrieved <span class="nowrap">March 15,</span> 2011</span>.</cite></span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-30">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.jruby.org/2013/05/16/jruby-1-7-4.html">"JRuby 1.7.4 Released"</a>. JRuby Team. May 16, 2013<span class="reference-accessdate">. Retrieved <span class="nowrap">May 19,</span> 2013</span>.</cite></span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-31">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20150724183209/http://jruby.org/2015/07/22/jruby-9-0-0-0.html">"JRuby 9.0.0.0 Released"</a>. JRuby Team. July 22, 2015. Archived from <a rel="nofollow" class="external text" href="http://jruby.org/2015/07/22/jruby-9-0-0-0.html">the original</a> on July 24, 2015<span class="reference-accessdate">. Retrieved <span class="nowrap">July 25,</span> 2015</span>.</cite></span>
</li>
<li id="cite_note-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-32">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20170116160817/http://jruby.org/2017/01/11/jruby-9-1-7-0.html">"JRuby 9.1.7.0 Released — JRuby.org"</a>. <i>jruby.org</i>. Archived from <a rel="nofollow" class="external text" href="http://jruby.org/2017/01/11/jruby-9-1-7-0.html">the original</a> on January 16, 2017<span class="reference-accessdate">. Retrieved <span class="nowrap">January 13,</span> 2017</span>.</cite></span>
</li>
<li id="cite_note-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-33">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20180527202544/http://jruby.org/2018/05/24/jruby-9-2-0-0.html">"JRuby 9.2.0.0 Released"</a>. Archived from <a rel="nofollow" class="external text" href="http://jruby.org/2018/05/24/jruby-9-2-0-0.html">the original</a> on May 27, 2018<span class="reference-accessdate">. Retrieved <span class="nowrap">May 27,</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-34">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jruby.org/2019/10/30/jruby-9-2-9-0.html">"JRuby 9.2.9.0 Released"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">November 5,</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-35">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jruby.org/2021/12/02/jruby-9-3-2-0.html">"JRuby 9.3.2.0 Released"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">January 11,</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-36"><span class="mw-cite-backlink"><b><a href="#cite_ref-36">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jruby.org/2022/01/19/jruby-9-3-3-0.html">"JRuby 9.3.3.0 Released"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">January 19,</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-37">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jruby.org/2022/03/23/jruby-9-3-4-0.html">"JRuby 9.3.4.0 Released"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">March 23,</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-38">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jruby.org/2022/11/23/jruby-9-4-0-0.html">"JRuby 9.4.0.0 Released"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">December 1,</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-39">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jruby.org/2023/02/07/jruby-9-4-1-0.html">"JRuby 9.4.1.0 Released"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">February 15,</span> 2023</span>.</cite></span>
</li>
<li id="cite_note-40"><span class="mw-cite-backlink"><b><a href="#cite_ref-40">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jruby.org/2023/03/08/jruby-9-4-2-0.html">"JRuby 9.4.2.0 Released"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">June 13,</span> 2023</span>.</cite></span>
</li>
<li id="cite_note-41"><span class="mw-cite-backlink"><b><a href="#cite_ref-41">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jruby.org/2023/06/07/jruby-9-4-3-0.html">"JRuby 9.4.3.0 Released"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">June 13,</span> 2023</span>.</cite></span>
</li>
<li id="cite_note-42"><span class="mw-cite-backlink"><b><a href="#cite_ref-42">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20110719115409/http://netbeans.org/servlets/NewsItemView?newsItemID=1015">"Ruby &amp; JRuby Support Available in NetBeans IDE"</a>. netbeans.org. March 6, 2007. Archived from <a rel="nofollow" class="external text" href="http://www.netbeans.org/servlets/NewsItemView?newsItemID=1015">the original</a> on July 19, 2011<span class="reference-accessdate">. Retrieved <span class="nowrap">July 4,</span> 2009</span>.</cite></span>
</li>
<li id="cite_note-43"><span class="mw-cite-backlink"><b><a href="#cite_ref-43">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.infoworld.com/d/developer-world/ruby-brightens-netbeans-platform-390">"Ruby brightens the NetBeans platform"</a>. infoworld.com. March 1, 2007<span class="reference-accessdate">. Retrieved <span class="nowrap">July 4,</span> 2008</span>.</cite></span>
</li>
<li id="cite_note-44"><span class="mw-cite-backlink"><b><a href="#cite_ref-44">^</a></b></span> <span class="reference-text"><cite id="CITEREFFox2006" class="citation web cs1">Fox, Joshua (July 17, 2006). <a rel="nofollow" class="external text" href="https://www.infoworld.com/article/2071794/ruby-for-the-java-world.html">"Ruby for the Java world"</a>. <i><a href="JavaWorld" class="mw-redirect" title="JavaWorld">JavaWorld</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">July 26,</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-45"><span class="mw-cite-backlink"><b><a href="#cite_ref-45">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://jcp.org/aboutJava/communityprocess/final/jsr223/index.html">JSR 223: Scripting for the Java Platform Specification Request</a></span>
</li>
<li id="cite_note-46"><span class="mw-cite-backlink"><b><a href="#cite_ref-46">^</a></b></span> <span class="reference-text"><cite id="CITEREFSieger2007" class="citation web cs1">Sieger, Nick (October 25, 2007). <a rel="nofollow" class="external text" href="http://blog.nicksieger.com/articles/2007/10/25/jruby-on-rails-fast-enough">"JRuby on Rails: Fast Enough"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">October 28,</span> 2007</span>.</cite></span>
</li>
<li id="cite_note-47"><span class="mw-cite-backlink"><b><a href="#cite_ref-47">^</a></b></span> <span class="reference-text"><cite id="CITEREFCangiano2007" class="citation web cs1">Cangiano, Antonio (December 3, 2007). <a rel="nofollow" class="external text" href="http://programmingzen.com/2007/12/03/the-great-ruby-shootout/">"The Great Ruby Shootout"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">February 2,</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-48"><span class="mw-cite-backlink"><b><a href="#cite_ref-48">^</a></b></span> <span class="reference-text">
<cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20150123023501/http://benchmarksgame.alioth.debian.org/u64q/jruby.html">"JRuby compared to Ruby 1.9, Computer Language Benchmarks Game (1)"</a>. Archived from <a rel="nofollow" class="external text" href="http://benchmarksgame.alioth.debian.org/u64q/jruby.html">the original</a> on January 23, 2015<span class="reference-accessdate">. Retrieved <span class="nowrap">February 2,</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-49"><span class="mw-cite-backlink"><b><a href="#cite_ref-49">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20140723042024/http://benchmarksgame.alioth.debian.org/u64/jruby.php">"JRuby compared to Ruby 1.9, Computer Language Benchmarks Game (2)"</a>. Archived from <a rel="nofollow" class="external text" href="http://benchmarksgame.alioth.debian.org/u64/jruby.php">the original</a> on July 23, 2014<span class="reference-accessdate">. Retrieved <span class="nowrap">February 2,</span> 2014</span>.</cite></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239549316">
/* start https://en.wikipedia.org/ */


.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}


/* end https://en.wikipedia.org/ */
</style><div class="refbegin" style="">
<ul><li><cite id="CITEREFKutner2012" class="citation book cs1">Kutner, Joe (August 22, 2012). <a rel="nofollow" class="external text" href="http://pragprog.com/book/jkdepj/deploying-with-jruby"><i>Deploying with JRuby: Deliver Scalable Web Apps using the JVM</i></a> (First&nbsp;ed.). <a href="Pragmatic_Bookshelf" class="mw-redirect" title="Pragmatic Bookshelf">Pragmatic Bookshelf</a>. p.&nbsp;200. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1934356975</bdi>.</cite></li>
<li><cite id="CITEREFO_NutterEneboSiegerBini2011" class="citation book cs1">O Nutter, Charles; Enebo, Thomas; Sieger, Nick; Bini, Ola; Dees, Ian (February 4, 2011). <a rel="nofollow" class="external text" href="https://archive.org/details/usingjrubybringi00nutt_0/page/300"><i>Using JRuby: Bringing Ruby to Java</i></a> (First&nbsp;ed.). <a href="Pragmatic_Bookshelf" class="mw-redirect" title="Pragmatic Bookshelf">Pragmatic Bookshelf</a>. pp.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/usingjrubybringi00nutt_0/page/300">300</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1934356654</bdi>.</cite></li>
<li><cite id="CITEREFEdelsonLiu2008" class="citation book cs1">Edelson, Justin; Liu, Henry (November 18, 2008). <a rel="nofollow" class="external text" href="https://archive.org/details/jrubycookbook00edel/page/222"><i>JRuby Cookbook</i></a> (First&nbsp;ed.). <a href="O'Reilly_Media" title="O'Reilly Media">O'Reilly Media</a>. pp.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/jrubycookbook00edel/page/222">222</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-596-51980-3</bdi>.</cite></li>
<li><cite id="CITEREFBini2007" class="citation book cs1">Bini, Ola (September 24, 2007). <a rel="nofollow" class="external text" href="https://archive.org/details/practicaljrubyon0000bini/page/330"><i>Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java</i></a> (First&nbsp;ed.). <a href="Apress" class="mw-redirect" title="Apress">Apress</a>. pp.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/practicaljrubyon0000bini/page/330">330</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1-59059-881-8</bdi>.</cite></li>
<li><cite id="CITEREFKutlerLeonard2009" class="citation book cs1">Kutler, Chris; Leonard, Brian (May 4, 2009). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120827112547/http://www.apress.com/book/view/1430216360"><i>NetBeans Ruby and Rails IDE with JRuby</i></a> (First&nbsp;ed.). <a href="Apress" class="mw-redirect" title="Apress">Apress</a>. p.&nbsp;160. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1-4302-1636-0</bdi>. Archived from <a rel="nofollow" class="external text" href="http://www.apress.com/book/view/1430216360">the original</a> on August 27, 2012<span class="reference-accessdate">. Retrieved <span class="nowrap">July 12,</span> 2009</span>.</cite></li></ul>
</div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://www.jruby.org">Official website</a></span></span> </li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Ruby_programming_language604" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="Ruby_programming_language604" style="font-size:114%;margin:0 4em"><a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby programming language</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Programming_language_implementation" title="Programming language implementation">Implementations</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Active</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Ruby_MRI" title="Ruby MRI">Ruby MRI</a>; <a href="YARV" title="YARV">YARV</a></li>
<li><a href="Mruby" title="Mruby">mruby</a></li>

<li><a href="RubyMotion" title="RubyMotion">RubyMotion</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Discontinued</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="MacRuby" title="MacRuby">MacRuby</a></li>
<li><a href="IronRuby" title="IronRuby">IronRuby</a></li>
<li>XRuby</li>
<li><a href="HotRuby" title="HotRuby">HotRuby</a></li>
<li><a href="MagLev_(software)" title="MagLev (software)">MagLev</a></li>
<li><a href="Rubinius" title="Rubinius">Rubinius</a></li></ul>
</div></td></tr></tbody></table><div></div></td><td class="noviewer navbox-image" rowspan="7" style="width:1px;padding:0 0 0 2px"><div><span typeof="mw:File"></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Integrated_development_environment" title="Integrated development environment">IDE</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Aptana_Studio" class="mw-redirect" title="Aptana Studio">Aptana Studio</a></li>
<li><a href="Komodo_IDE" title="Komodo IDE">Komodo IDE</a></li>
<li><a href="RubyMine" class="mw-redirect" title="RubyMine">RubyMine</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Applications</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Capistrano_(software)" title="Capistrano (software)">Capistrano</a></li>
<li><a href="Hackety_Hack" title="Hackety Hack">Hackety Hack</a></li>
<li><a href="Interactive_Ruby_Shell" class="mw-redirect" title="Interactive Ruby Shell">Interactive Ruby Shell</a></li>
<li><a href="Pry_(software)" title="Pry (software)">Pry</a></li>
<li><a href="Rake_(software)" title="Rake (software)">Rake</a></li>
<li><a href="Redmine" title="Redmine">Redmine</a></li>
<li><a href="RSpec" title="RSpec">RSpec</a></li>
<li><a href="RubyGems" title="RubyGems">RubyGems</a></li>
<li><a href="Ruby_Version_Manager" title="Ruby Version Manager">RVM</a></li>
<li><a href="Progress_Chef" title="Progress Chef">Chef</a></li>
<li><a href="Puppet_(software)" title="Puppet (software)">Puppet</a></li>
<li><a href="Vagrant_(software)" title="Vagrant (software)">Vagrant</a></li>
<li><a href="Homebrew_(package_manager)" title="Homebrew (package manager)">Homebrew</a></li>
<li><a href="CocoaPods" title="CocoaPods">CocoaPods</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Library_(computing)" title="Library (computing)">Libraries</a> and <a href="Software_framework" title="Software framework">frameworks</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li>Adhearsion</li>
<li><a href="ERuby" title="ERuby">eRuby</a> (RHTML)</li>
<li><a href="Merb" title="Merb">Merb</a></li>
<li><a href="Padrino_(web_framework)" title="Padrino (web framework)">Padrino</a></li>
<li><a href="RubyCocoa" title="RubyCocoa">RubyCocoa</a></li>
<li><a href="Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a></li>
<li><a href="Shoes_(GUI_toolkit)" class="mw-redirect" title="Shoes (GUI toolkit)">Shoes</a></li>
<li><a href="Sinatra_(software)" title="Sinatra (software)">Sinatra</a></li>
<li><a href="QtRuby" class="mw-redirect" title="QtRuby">QtRuby</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Server_(computing)" title="Server (computing)">Server</a> software</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Mod_ruby" title="Mod ruby">mod_ruby</a></li>
<li><a href="Mongrel_(web_server)" title="Mongrel (web server)">Mongrel</a></li>
<li><a href="Phusion_Passenger" title="Phusion Passenger">Phusion Passenger</a> (mod_rails/mod_rack)</li>
<li><a href="Rack_(web_server_interface)" title="Rack (web server interface)">Rack</a></li>
<li><a href="WEBrick" title="WEBrick">WEBrick</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Yukihiro_Matsumoto" title="Yukihiro Matsumoto">Yukihiro Matsumoto</a></li>
<li><a href="David_Heinemeier_Hansson" title="David Heinemeier Hansson">David Heinemeier Hansson</a></li>
<li><a href="Why_the_lucky_stiff" title="Why the lucky stiff">why the lucky stiff</a></li>
<li><a href="Dave_Thomas_(programmer)" title="Dave Thomas (programmer)">Dave Thomas</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Ruby_Document_format" title="Ruby Document format">Document format</a></li>
<li><i><a href="Why's_(poignant)_Guide_to_Ruby" title="Why's (poignant) Guide to Ruby">why's (poignant) Guide to Ruby</a></i></li>
<li><a href="RGSS" class="mw-redirect" title="RGSS">RGSS</a></li>
<li><a href="Ruby_Central" title="Ruby Central">Ruby Central</a></li>
<li><a href="RubyKaigi" title="RubyKaigi">RubyKaigi</a></li>
<li><a href="RubyForge" title="RubyForge">RubyForge</a></li>
<li><a href="Ruby_License" title="Ruby License">Ruby License</a></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="3"><div>
<ul><li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> <b>Category</b></li>
<li><span class="noviewer" typeof="mw:File"><span title="Commons page"></span></span> <b><a href="https://commons.wikimedia.org/wiki/Category:Ruby_programming_language" class="extiw external" title="commons:Category:Ruby programming language">Commons</a></b></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Java_(software_platform)419" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><div id="Java_(software_platform)419" style="font-size:114%;margin:0 4em"><a href="Java_(software_platform)" title="Java (software platform)">Java (software platform)</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Platforms</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_virtual_machine" title="Java virtual machine">JVM</a></li>
<li><a href="Java_Platform%2C_Micro_Edition" title="Java Platform, Micro Edition">Java ME</a> (Micro)</li>
<li><a href="Java_Platform%2C_Standard_Edition" title="Java Platform, Standard Edition">Java SE</a> (Standard)</li>
<li><a href="Jakarta_EE" title="Jakarta EE">Jakarta EE</a> (Enterprise)</li>
<li><a href="Java_Card" title="Java Card">Java Card</a></li>
<li><a href="Android_software_development#SDK" title="Android software development">Android SDK</a></li>
<li><a href="GraalVM" title="GraalVM">GraalVM</a></li></ul>
</div></td><td class="noviewer navbox-image" rowspan="5" style="width:1px;padding:0 0 0 2px"><div><span typeof="mw:File"></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Technologies</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Oracle</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Squawk_virtual_machine" title="Squawk virtual machine">Squawk</a></li>
<li><a href="Java_Development_Kit" title="Java Development Kit">Java Development Kit</a></li>
<li><a href="OpenJDK" title="OpenJDK">OpenJDK</a></li>
<li><a href="Java_virtual_machine" title="Java virtual machine">Java virtual machine</a></li>
<li><a href="JavaFX" title="JavaFX">JavaFX</a></li>
<li><a href="Maxine_Virtual_Machine" title="Maxine Virtual Machine">Maxine VM</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Platform</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_applet" title="Java applet">Applets</a></li>
<li><a href="Jakarta_Servlet" title="Jakarta Servlet">Servlets</a></li>
<li><a href="MIDlet" title="MIDlet">MIDlets</a></li>
<li><a href="Jakarta_Server_Pages" title="Jakarta Server Pages">JSP</a></li>
<li><a href="Jakarta_Faces" title="Jakarta Faces">JSF</a></li>
<li><a href="Java_Web_Start" title="Java Web Start">Web Start</a> (JNLP)</li>
<li><a href="Pack200" title="Pack200">Pack200</a></li>
<li><a href="Java_Platform_Module_System" title="Java Platform Module System">Modules</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Major<br>third-party</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Blackdown_Java" title="Blackdown Java">Blackdown</a></li>
<li><a href="Eclipse_(software)" title="Eclipse (software)">Eclipse</a></li>
<li><a href="GNU_Classpath" title="GNU Classpath">GNU Classpath</a></li>
<li><a href="Google_Web_Toolkit" title="Google Web Toolkit">GWT</a></li>
<li><a href="Apache_Harmony" title="Apache Harmony">Harmony</a></li>
<li><a href="Hibernate_(framework)" title="Hibernate (framework)">Hibernate</a></li>
<li><a href="IcedTea" title="IcedTea">IcedTea</a></li>
<li><a href="Jazelle" title="Jazelle">Jazelle</a></li>
<li><a href="Spring_Framework" title="Spring Framework">Spring</a></li>
<li><a href="Apache_Struts" title="Apache Struts">Struts</a></li>
<li><a href="Oracle_TopLink" title="Oracle TopLink">TopLink</a></li>
<li><a href="WildFly" title="WildFly">WildFly</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">History</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_version_history" title="Java version history">Java version history</a></li>
<li><a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></li>
<li><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></li>
<li><a href="Free_Java_implementations" title="Free Java implementations">Free Java implementations</a></li>
<li>Slogan: <i><a href="Write_once%2C_run_anywhere" title="Write once, run anywhere">Write once, run anywhere</a></i></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="List_of_JVM_languages" title="List of JVM languages">JVM<br>languages</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_(programming_language)" title="Java (programming language)">Java</a></li>
<li><a href="BeanShell" title="BeanShell">BeanShell</a></li>
<li><a href="Clojure" title="Clojure">Clojure</a></li>
<li><a href="Groovy_(programming_language)" class="mw-redirect" title="Groovy (programming language)">Groovy</a></li>

<li><a href="Jython" title="Jython">Jython</a></li>
<li><a href="Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a></li>
<li><a href="Processing" title="Processing">Processing</a></li>
<li><a href="Rhino_(JavaScript_engine)" title="Rhino (JavaScript engine)">Rhino</a></li>
<li><a href="Scala_(programming_language)" title="Scala (programming language)">Scala</a></li>
<li><a href="Oxygene_(programming_language)" title="Oxygene (programming language)">Oxygene</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Community</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Conferences</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="JavaOne" title="JavaOne">JavaOne</a></li>
<li><a href="Devoxx" title="Devoxx">Devoxx</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Organizations</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Apache_Software_Foundation" class="mw-redirect" title="Apache Software Foundation">Apache Software Foundation</a></li>
<li><a href="Eclipse_Foundation" title="Eclipse Foundation">Eclipse Foundation</a></li>
<li><a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></li>
<li><a href="Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a></li>
<li><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>, <a href="Sun_Microsystems_Laboratories" class="mw-redirect" title="Sun Microsystems Laboratories">Sun Microsystems Laboratories</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="James_Gosling" title="James Gosling">James Gosling</a></li>
<li><a href="Arthur_van_Hoff" title="Arthur van Hoff">Arthur van Hoff</a></li>
<li><a href="Urs_H%C3%B6lzle" title="Urs Hölzle">Urs Hölzle</a></li>
<li><a href="Patrick_Naughton" class="new" title="Patrick Naughton (page does not exist)">Patrick Naughton</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><td class="navbox-abovebelow" colspan="3"><div><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> <b>Category</b> • <span class="nowrap"><span class="skin-invert-image noviewer" typeof="mw:File"></span> </span><a href="Portal%3AComputer_programming" title="Portal:Computer programming">Computer programming portal</a></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-04-12" href="https://en.wikipedia.org/wiki/?title=JRuby&amp;oldid=1285299525">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>